package com.wms.ymcc.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.wms.ymcc.domain.Login;
import com.wms.ymcc.dto.LoginDto;
import com.wms.ymcc.exception.GlobalBaseException;
import com.wms.ymcc.mapper.LoginMapper;
import com.wms.ymcc.result.JSONResult;
import com.wms.ymcc.service.ILoginService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.wms.ymcc.util.HttpUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * <p>
 * 登录表 服务实现类
 * </p>
 *
 * @author 阿盛哟
 * @since 2025-05-29
 */
@Service
public class LoginServiceImpl extends ServiceImpl<LoginMapper, Login> implements ILoginService {

    // 从yml中获取url
    @Value("${ymcc.authurl}")
    private String authurl;

    @Override
    public JSONResult login(LoginDto loginDto) {
        // 1. 校验
        // 2. 根据用户名查询用户信息
        Wrapper<Login> wrapper = new EntityWrapper<>();
        wrapper.eq("username",loginDto.getUsername());
        Login login = selectOne(wrapper);

        // 判断用户是否为空
        if(login==null){
            throw new GlobalBaseException("用户不存在");
        }

        // 校验type类型，
        if(loginDto.getType().intValue()!=login.getType().intValue()){
            throw new GlobalBaseException("走错房间了");
        }

        // 拼接url
        String url = String.format(authurl,
                login.getClientId(),
                login.getClientSecret(),
                loginDto.getUsername(),
                loginDto.getPassword());


        // 发送http请求，获取token。
        String jsonString = HttpUtil.sendPost(url, null);
        // jsonString --> 转成对象
        Map<String,Object> map = JSONObject.parseObject(jsonString, Map.class);


        /**
         * 过期时间： 数据库存的是  2个小时
         * 获取当前的时间  +  2个小时 =  过期的时间日期
         * 把过期的时间日期转成分钟， 秒， 毫秒， 响应给前端
         */

        /**
         * 判断一下：token是否生成了。
         * 如果生成了
         * return JSONResult.success(map);
         * 如果没生成：
         * return JSONResult.error("登录失败");
         */

        return JSONResult.success(map);
    }

    @Override
    public JSONResult refresh(Map<String, Object> map) {

        // 校验

        // 拼接url。 刷新过期时间用的

        // 发送http请求， login方法
        return null;
    }
}
